/**
 * 多语言的配置
 * @author ellwood
 * @date 2024-01-15
 * @version V1.0.0
 */
import { createI18n } from 'vue-i18n'
import zhCN from '~/locales/lang/zh-CN.ts'

export const defaultLocale = 'zh-CN'

const i18n = createI18n({
  // 是否启用传统模式，默认是true，这里不需要设置为false
  legacy: false,
  // 本地化语言获取失败的时候是否输出警告
  missingWarn: false,
  // 默认语言
  locale: defaultLocale,
  messages: {
    'zh-CN': zhCN,
  },
})

export async function loadLanguageAsync(locale: string = defaultLocale) {
  const current = i18n.global.locale.value
  try {
    if (current === locale)
      return nextTick()

    const message = await import(`./lang/${locale}.ts`)
    if (message)
      i18n.global.setLocaleMessage(locale, message.default)
  }
  catch (e) {
    console.warn('load language error', e)
  }

  return nextTick()
}

export default i18n
